package ink.tiptop.learn.convert;

import ink.tiptop.learn.pojo.dto.userBaseInfo.AddUserBaseInfoDto;
import ink.tiptop.learn.pojo.dto.userBaseInfo.QueryUserBaseInfoDto;
import ink.tiptop.learn.pojo.dto.userBaseInfo.UpdateUserBaseInfoDto;
import ink.tiptop.learn.pojo.po.UserBaseInfoPO;
import ink.tiptop.learn.pojo.vo.UserBaseInfoVO;
import org.mapstruct.Mapper;

import java.util.List;

/**
 * 测试用户信息表(UserBaseInfo)dto vo po 等转换接口
 *
 * @author zjf
 * @since 2020-08-14 20:51:53
 *
 * default：映射器不使用组件模型，实例通常通过Mappers.getMapper(Class clazz)检索。
 * cdi：生成的映射器是应用程序范围的CDI bean，可以通过@Inject注解来检索。
 * spring：生成的映射器是一个单例范围的Spring bean，可以通过@Autowired检索。
 * jsr330：生成的映射器使用{@code @Named}进行注释，并且可以通过@Inject检索，例如使用Spring。
 */
@Mapper(componentModel = "spring") // 注入到spring
public interface UserBaseInfoConvert {
//    UserBaseInfoConvert INSTANCE = Mappers.getMapper(UserBaseInfoConvert.class);

    UserBaseInfoVO convert(UserBaseInfoPO po);

    UserBaseInfoPO convert(UserBaseInfoVO vo);

    UserBaseInfoPO convert(AddUserBaseInfoDto dto);

    UserBaseInfoPO convert(QueryUserBaseInfoDto dto);

    UserBaseInfoPO convert(UpdateUserBaseInfoDto dto);

    List<UserBaseInfoVO> convertList(List<UserBaseInfoPO> vo);
}